唯链任之劼 | 权威证明 2.0
BeWater DevCon 2021 上,唯链高级研究研究任之劼,分享了在共识机制领域里的研究和实践,给大家带来了很多新的启发。
本文重点:
1、PoA 和 PoW 的区别;
2、什么是权威证明 2.0,它有哪些优势?
BeWater
大家好,非常开心这次来到 BeWater 分享,我是任之劼,唯链的高级研究员。我 2019 年 4 月加入唯链研究团队,主要的工作就是做 PoA 2.0,包括写 PoA 的论文,接着也参与了开发,现在 PoA 2.0 已经在测试网上线了。
我在荷兰代尔夫特理工大学博士后期间,主要进行的是共识算法和无限扩展的研究,之后在 FC2019 上发了一篇关于分片的论文。如果大家有兴趣的话,我也可以回答一下分片的问题。
除此之外,我在知乎上有个专栏《区块链演义》,大家若有兴趣的话也可以关注一下。
接着介绍一下唯链:
在区块链圈子里面很多人都说我们最主要是做 to B 的,我们确实是做 to B 的,主要做和商业结合的业务,我们希望区块链技术能够被应用于现实世界之中。我们(已经)有世界上非常知名的企业合作伙伴,也欢迎更多的企业,把他们的业务跑在我们的公链上。
当然为了方便企业更好的将区块链落地,更好地把业务衔接区块链技术,我们推出了自主研发的 VeChain ToolChain™ 这样的一站式数据服务平台,用唯链领先的底层区块链技术,帮助企业以成本可控、高效灵活的方式把业务上链。
BeWater
一、PoA vs. PoW
接下来,我们来说共识。我介绍一下唯链采用的 PoA 权威证明和工作量证明的区别。
工作证明其实上午说了,Ted 已经讲过了最长链共识(点击链接,回顾Avalanche 联合创始人的分享 ),什么是最长链共识?其实工作证明这个概念特别的简单,所有的节点,我们先把时间分成轮,接着每轮随机显示一个节点出块,接着每个人出块的时候把自己的块连在当前他观察到的最长链,经过一段时间最长链就会成为共识。因为同样存在另外一条和它一样长的链的概率就会越来越小,这就是现在被称为中本聪共识的一个东西。
比特币解决的最大的问题就是“谁是节点”的问题,因为在一个开放系统中,恶意节点可以任意伪造多个身份。中本聪把哈希函数作为你能够参与这个系统的准入机制,哈希函数是一个不可伪造,而且所有人都可以验证的这么一个东西。签名也可以验证,但用非对称的话,你还是需要获得他的公钥才可以验证,但是哈希函数所有人都可以验证,而且无法伪造。
通过用 PoW 进行准入机制,然后接着再用最长链共识做共识,然后我们得到了比特币的 PoW,但是接着也有一个问题,就是哈希函数存在固有问题即能源浪费、中心化、低效,我要解释一下低效无法解决这个问题不完全对,实际上会有一些可扩展的 PoW算法,这些其实很多,比如 Bitcoin-NG,比如 Nervos 的 NC-max。
作为最早开始坚持权威证明共识(Proof-of-Authority,以下简称“PoA”)的区块链平台之一,我们唯链区块链底层共识的设计思路一直是和自身发展方向紧密相扣的。早在白皮书中,唯链就明确了对区块链行业的理解,提出「技术共识-商业共识-治理共识」三个发展阶段。
对于我们的业务,我们主要服务的商业场景,我们的客户来说,非许可的性质,也就是说所有的人都可以加入共识机制的性质,可能并不是一个我们特别需要的性质。
对商业机构而言,如果在区块链上跑应用,他们有的时候其实并不想把他们的数据放在可公开加入但是身份不明的节点上面。他们会认为现实中的大机构或者现实中声望卓著的机构更可信。
但同时,他们会相信唯链基金会的利益和他们以及和这个生态是一致的。在这种有可信假设的前提下,我们就可以采用 PoA 共识。
如果我们假设有一个权威机构,可以选出这些更诚实的更可信的节点,然后来进行共识的话,其实中本聪共识是很容易达成的,只要大家轮流出块就可以。
同时,因为不需要算哈希函数,它自然的就会有很多的优势:
就唯链区块链而言,现有的出块节点数量稳定且高于行业平均水平,并且对节点的要求较高,拥有者以企业等实体为主,能有效利用节点的经济利益、链上或链下声誉、业务绑定实现更高的网络安全性。商用最佳,对 PoA 来说不是过誉。
那我们为什么还要升级到权威证明 2.0 呢?就是说我们实际上并没有满足于我们就用权威证明 1.0,我们还是希望能够给我们的用户更好的体验,希望提升 PoA 的性能,同时让 PoA 更安全,而且是一种能够被证明,能够被确认的“绝对安全”。
所以唯链研究团队主要在三个部分升级了 PoA2.0:
1)我们采用了一个更可靠的随机数生成的机制,基本上就是我们用了一个基于 VRF(可验证随机函数)的信标来产生随机数,来保证出块节点的不可预测性,从而防止对于长时间之后的这种节点的腐化攻击。
2)我们采用了一个基于委员会背书的出块机制,每轮我们会选出一个出块者进行背书,这样可以提高中本聪共识性能。这个我一会儿着重讲一讲。
3)基于 HotStuff BFT 共识,我们加上最终性机制。也就是说未来 PoA2.0 会有两个共识,经过几个区块之后,区块先达到确认,也就是中本聪共识,这个安全性已经超过所有的基本上主流的中本聪共识的安全性,或者说至少与之相当。
接着会在比较长一点的时间,大概 5 分钟 10 分钟之后达到一个 BFT,就是拜占庭容错的确认,达到这种确认后,我们可以证明,无论是在网络出现什么状况下,达到确认的东西都是不可篡改的。
这些在和法律相关的商业应用中,这个是比较被看中的,另外在跨链的时候会生成证据,未来如果采用 Cosmos 的 IBC 的时候,可以更好的提供一个有 BFT 的证据。
之所以我们一会儿会主要的讲第二点,因为第一点现在很多PoS都在用,以太坊的信标链和 Polkadot 的 GRANDPA 都有类似的概念,但是第二点是独创的这么一个东西,虽然是独创的,但是大家一会儿可以听到和 Avalanche 的概念有点类似。
BeWater
二、中本聪共识的机制
现在我们讲一下中本聪的共识基本上怎么达成的,每一轮会有出块节点,他将区块广播给所有的节点。接着下一个节点轮到他出块,他把自己的区块放在最长的链上。
接着经过 K 个区块,我们会知道这个区块确认了,因为它大概率不会被篡改。也就是说,如果大部分节点诚实,那么大概率不可能存在一条和这条链一样长的链。
因为区块链,之前 Ted 也说了,其实输出是有极限的,整个输出会受制于你网络的这个容量。然后现在基本上也是整个区块链性能的瓶颈,虽然计算也是瓶颈之一,但是瓶颈主要还是在网络传输上,这个时候假设区块链大小是给定的,网络是给定的,它的传输时间已经是给定的,这时候我们想提高输出唯一能做的就是来改这条线——我们是不是能缩小区块间隔?
对于中本聪共识而言,我们不能把区块间隔放在这个位置,那样就代表有分叉。因为这时候轮到他出块了,他可能还来不及收到上一个区块,所以他只能造出一个分叉,分叉这个东西虽然在中本聪共识里大家都知道可能会出现出块这个情况,好像中本聪共识是允许分叉的,但实际上并不是这样的。
每次一有分叉出现就代表着有一部分节点,无论是算力也好投票也好,他被误导了,他自己的算力和投票没有共性给全网的安全性。所以中本聪共识是容忍偶尔的分叉,但不希望经常性出现分叉。如果这个网络里长时间有分叉存在,代表这个共识算法是不安全的,所以你不能把区块间隔设到比这个小,这个基本上是任何区块链算法所能达到的一个上限。
那么,我们能不能(把区块间隔)设在上限那呢?实际上也是不行的,为什么?如果你说我在一个正常的网络里,如果我采用中本聪共识,我的区块间隔设在区块刚刚好可以发到整个网络的情况这个程度,就代表着恶意节点可以进行网络的阻塞,或者他恶意的出多个区块,这个时候你的网络就传输不了这么多的区块,就会造成分叉。然后你不能给恶意节点一种我只要一阻塞网络,这个网络就可以分叉,接着我就可以进行攻击的印象。
所以对所有的中本聪共识,因为他有分叉的可能,所以你必须要设计一个冗余。虽然说现在有一个非常有趣的事实:所有区块链设计的都是拜占庭容错的,但几乎 99% 的时间所有的区块链其实都运行在远比安全假设很多的网络里。但是,(即便一般情况下网络远比我们假设的要安全),但如果说你是一个区块链,你这个东西就必须要安全,而这样你就必须要加上冗余,你就不能给恶意节点说我可能有一定的机会可以攻击的这样一个可能。
BeWater
三、PBFT 共识机制
我们如果想解决这个问题,另外的方法就是说我们不让它分叉,我们每个区块出来就达成共识,我们保证不会有不一致。用的一个方法就是比如说拜占庭容错。它是一个很复杂的基于全网投票的共识,全网投票需要非常长的时间。如果一次全网投票失败了,他甚至需要更长的时间进行视图切换,导致的结果就是说:为了防止分叉,你其实需要做非常非常多的事情,然后才能保证他 100% 不会分叉。
BeWater
四、POA 共识机制
其实就是观察到了这件事情,我们提出了这种基于委员会的分叉机制,是为什么呢?实际上如果你非常仔细的研究过拜占庭容错共识,你就发现做的所有投票是为了防止 100% 不会分叉。PBFT 做的这么复杂的机制,防止的是一些非常非常极端的事情,网络可能 99.9% 的时间都不会出现的情况,但是你需要用特别多轮的投票来保证这些情况不会影响你的一致性和活性。
实际上你可以用很简单的机制,来 99% 的防止分叉,这就是我们想要去做的——基于委员会投票的这么一个共识机制,每轮到了区块传输之后,我们不用去全网投票,我们对网络进行抽样,我们选出十个节点作为委员会,让他们对于新出的区块进行背书。
这个的好处是什么呢?相比于传统的中本聪共识,我们虽然多了委员会投票的阶段,虽然这个阶段会增加一些额外的复杂度,但是我们因为可以保证 99% 的概率我们可以避免分叉,所以我们可以非常安全的,非常放心的把之前在传统中本聪共识里必须要留的冗余去掉。我们可以保证他的输出是这样的——即便是恶意节点去恶意阻塞网络,或者他恶意分叉,他也是没法导致整条链分叉的。
因为即便在网络阻塞的情况下,或者他恶意分叉,他必须要保证同他一起出块的随机的委员会都是恶意的,他才能进行分叉,这虽然不是完全不可能,但概率非常小。因为他做不到,所以我们就不用担心因为分叉导致的安全性下降,甚至导致算法失效的问题。
相对于 BFT 的共识,其实刚才 Ted 也提到了,BFT 共识你不谈延迟谈 TPS 是在耍流氓。BFT 共识他理论上是可以达到很高的输出,但因为他刚才说了它有很长的投票时间,所以你真的想达到很高的输出你需要用更大的区块,会导致更大的延迟。我们的优势是可以达到更小的延迟,同时在牺牲一部分复杂度的情况下,我们现在收集的签名度更多了。我们比传统的中本聪共识更快的达到共识。
这里面提出一个概念,我们有更好的所谓的「带宽利用率」。我们其实能够用最多的带宽来进行区块的传输,而带宽也是基本上共识机制,现在大家认为的最大的瓶颈所在。
这是我们今年在 AsiaCCS 上投的一篇论文的数值模拟结果,我们现在同时考虑输出和延迟,很显然右下角是我们想要去的地方,就是我们希望能达到这点。其实像传统的 NC 和传统的 PBFT,他们会在低延迟或者高延迟的地方胜出,这和我们直觉也差不多,其实都不是现在比较好的这种共识算法。比较好的共识算法像 Tendermint或者 HotStuff BFT。
但是所有灰色的线都是通过调整委员会大小所能够达到的输出和延迟,我们会发现在低延迟的区间我们完全可以用我们采用的包含委员会的区块共识机制,让他达到一个甚至优于现在所有共识算法的这么一个输出。
VeChain 社区激励计划
最后做一个广告,我们今年推出了一个百万美元的社区激励计划,对于开发者来说,如果你们有兴趣来唯链生态上做东西的话,且符合我们唯链生态的定位,就可以来申请这个 Grant。
但其实这个定位也是比较吸引人的,例如是我们对于一些热门概念比如 NFT,DeFi 是非常非常支持的。我们也有完善的和 NFT 相关的基础设施。
此外,包括溯源、供应链这些,都是我们之前就在做的东西,现在我们还做了很多低碳环保和清洁能源可持续发展方面的项目。如果大家有这样的项目,可以来我们的链上申请激励,或者做基础设施建设,比如跨链桥。当然,我们也会看你有没有长期运营的能力和意愿。
这个 Grant 是在 Github 上公开申请,如果申请下来的话,这个流程比较短,第一批的费用会立刻发放下去,我觉得还是有吸引力的。
申请链接:https://www.vechain.org/grant-program
另外一方面是我负责的,我们除了开发者而言,还会资助研究的项目。我们链虽然是一个针对应用的公链,但除了在共识算法上的探索,对于在任何对区块链有益的探索,我们都是非常欢迎也是非常支持的。包括像刚才刘老师说的,治理机制。
现在其实治理机制是一个大问题,没有人愿意参与治理。治理币基本上大家都是拿来炒作,我们现在也在和墨尔本皇家理工大学在研究一个什么样的治理机制更好?所有的研究我们其实自己在做一部分,也和外部的机构例如高校进行合作。
我们也欢迎社区的人,无论是基础研究还是偏应用的研究,都欢迎你们来申请。
今天我就分享这么多,谢谢大家。
问答环节
提问1:我想问一下这个委员会是怎么产生的,有通过 VRF,还是你们会指定?
任之劼:因为我们本身已经生成了随机信标,我们用安全的随机信标每轮选择出一个委员会。
提问2:他会带来多大的延迟。
任之劼:不会的,它是本地计算的,和 Algorand 类似,你算出一个 VRF 和阈值去比较。
提问3:你们出块的节点和委员会都是通过 VRF 去选的?
任之劼:出块节点和委员会都是通过随机信标去选的,但是方法不太一样。
————————————————
历史文章:
- 闭门会报名 -